#include "ThreadPool.hpp"
#include "Task.hpp"
#include <unistd.h>
#include <ctime>

int main()
{
    srand(time(nullptr) ^ getpid());
    ThreadPool<Task> *tp = new ThreadPool<Task>();
    tp->start();

    while (true)
    {
        int len = op.size();
        // 派发任务
        int data1 = rand() % 10 + 1;
        usleep(10);
        int data2 = rand() % 10;
        char oper = op[rand() % len];

        Task t(data1, data2, oper);

        tp->push(t);

        std::cout << "thread done task : " << t.GetTask() << std::endl;
        sleep(1);

        // 线程处理
        std::cout << "thread is running" << std::endl;
    }

    return 0;

}

// #include <iostream>
// #include "Thread.hpp"
// #include <unistd.h>
// #include <vector>

// void Print()
// {
//     while(true)
//     {
//         std::cout<<"我是一个线程"<<std::endl;
//         sleep(1);
//     }
// }


// int main()
// {
//     // std::vector<Thread> threads;
//     // for(int i=0;i<5;i++)
//     // {
//     //     threads.push_back(Thread(Print));
//     // }

//     // for(int  i=0;i<5;i++)
//     // {
//     //     threads[i].Run();
//     //     std::cout<<threads[i].GetThreadName()<<std::endl;
//     // }

//     //  for(int  i=0;i<5;i++)
//     // {
//     //     threads[i].Join();
//     // }

//     // Thread t(Print);

//     // t.Run();

//     // std::cout<<"线程名称："<<t.GetThreadName()<<std::endl;
//     // std::cout<<"线程时间戳："<<t.GetStartTimeStamp()<<std::endl;
//     // std::cout<<"线程是否运行："<<t.IsRunning()<<std::endl;

//     // t.Join();

//     return 0;

// }